home *** CD-ROM | disk | FTP | other *** search
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-
-
- <!--- I default to charlie for the password no need to have the code below... unless for
- another reason --->
-
-
- <CFSET PASSWORD_KEY = "4p0L@r1$">
- <CFSET EcryptedPassword = cfusion_Encrypt( #password#, PASSWORD_KEY )>
- <CFREGISTRY ACTION=GET
- Branch="HKEY_LOCAL_MACHINE\SOFTWARE\Allaire\ColdFusion\CurrentVersion\Server"
- Entry="SecurityServerAdminPasswd"
- Variable="AdminPassword">
- <CFPARAM Name="AdminPassword" Default="NoPasswordRegistered">
- <CFIF CompareNoCase( EcryptedPassword, AdminPassword) IS NOT 0>
- <!--- The password is missing or invalid. --->
- <cfoutput>Password Invalid or not entered!!</cfoutput>
- <CFABORT>
- </CFIF>
-
- <html>
- <head>
- <title>Siteminder Migration</title>
- </head>
-
- <body>
- <h2>Siteminder Migration - Security Contexts</h2>
- <!--Change the directory name and source xml filename accordingly-->
-
- <cfset xmlfilename="#importfile#">
- <cfset LOGFILE=#replace(#xmlfilename#,".xml","_import.log")#>
-
- <cfset RealmExists = "No">
- <CFPARAM NAME="SecurityServer" DEFAULT="CFSM">
- <cf_SOXML
- action="XML2DOM"
- input="#xmlfilename#"
- output="Policy"
- type="file">
-
- <cfloop collection="#Policy.selectNodes("policystore/userdirectories")#" item="UserDirectories">
- <cfscript>
- UD = UserDirectories.selectNodes("userdir");
- </cfscript>
-
- <table border="0">
- <cfloop collection="#UD#" item="UserDirectory">
-
- <cfscript>
- ndTitle = UserDirectory.selectSingleNode("name");
- ndDescription = UserDirectory.selectSingleNode("desc");
- ndServer = UserDirectory.selectSingleNode("server");
- ndUsername = UserDirectory.selectSingleNode("username");
- ndPassword = UserDirectory.selectSingleNode("password");
- ndSecureCon = UserDirectory.selectSingleNode("secureconn");
- ndNamespace = UserDirectory.selectSingleNode("namespace/name");
- ndSchemename = UserDirectory.selectSingleNode("namespace/odbcschemename");
- ndSchemedesc = UserDirectory.selectSingleNode("namespace/odbcschemedesc");
- ndAuthuser = UserDirectory.selectSingleNode("namespace/authenticateuser");
- ndEnumerate = UserDirectory.selectSingleNode("namespace/enumerate");
- ndgetgrpprop = UserDirectory.selectSingleNode("namespace/getgroupproperty");
- ndgetgrpprops = UserDirectory.selectSingleNode("namespace/getgroupproperties");
- ndgetusrgrps = UserDirectory.selectSingleNode("namespace/getusergroups");
- ndgetusrgrpinfo = UserDirectory.selectSingleNode("namespace/getuserorgroupinfo");
- ndgetusrprop = UserDirectory.selectSingleNode("namespace/getuserproperty");
- ndgetusrprops = UserDirectory.selectSingleNode("namespace/getuserproperties");
- ndinituser = UserDirectory.selectSingleNode("namespace/inituser");
- ndisgrpmmbr = UserDirectory.selectSingleNode("namespace/isgroupmember");
- ndlookup = UserDirectory.selectSingleNode("namespace/lookup");
- ndlookupgrps = UserDirectory.selectSingleNode("namespace/lookupgroups");
- ndlookupusrs = UserDirectory.selectSingleNode("namespace/lookupusers");
- ndsetgrpprop = UserDirectory.selectSingleNode("namespace/setgroupproperty");
- ndsetusrprop = UserDirectory.selectSingleNode("namespace/setuserproperty");
- ndSearchresults = UserDirectory.selectSingleNode("namespace/SearchResults");
- ndSearchroot = UserDirectory.selectSingleNode("namespace/SearchRoot");
- ndLookupstart = UserDirectory.selectSingleNode("namespace/LookupStart");
- ndLookupend = UserDirectory.selectSingleNode("namespace/LookupEnd");
- ndSearchtimeout = UserDirectory.selectSingleNode("namespace/SearchTimeout");
- ndSearchresults = UserDirectory.selectSingleNode("namespace/SearchResults");
- ndSearchscope = UserDirectory.selectSingleNode("namespace/SearchScope");
- </cfscript>
-
- <cfoutput>
- <tr>
- <td><b>#ndTitle.text#</b><br>
- #ndDescription.text#<br>
- #ndServer.text#<br>
- #ndUsername.text#<br>
- #ndPassword.text#<br>
- #ndSecureCon.text#<br>
- #ndNamespace.text#<br>
- <!---
-
- #ndSearchroot.text#<br>
- #ndLookupstart.text#<br>
- #ndLookupend.text#<br>
- #ndSearchtimeout.text#<br>
- #ndSearchresults.text#<br>
- #ndSearchscope.text#<br>
- --->
- </tr>
- <CFIF ndNamespace.text IS "LDAP">
- <CFIF ndSearchresults.text IS "">
- <CFSET ndSearchresults.text=100>
- </CFIF>
- <CFIF ndSearchtimeout.text IS "">
- <CFSET ndSearchtimeout.text=10>
- </CFIF>
- <CFIF ndUsername.text IS "">
- <CFSET UserCredentials="NO">
- <CFELSE>
- <CFSET UserCredentials="YES">
- </CFIF>
- </CFIF>
-
- <CFIF ndNamespace.text IS "LDAP">
- <CFSET ndNamespace.text="LDAP:">
- <CFELSEIF ndNamespace.text IS "ODBC">
- <CFSET ndNamespace.text="ODBC:">
- <CFELSE>
- <CFSET ndNamespace.text="WinNT:">
- </CFIF>
-
- <CFIF ndNamespace.text IS "ODBC:">
- <!--- Set ODBC fields defaults. --->
- <CFTRY>
- <CFNewInternalAdminSecurity ACTION=CREATEODBCQUERYSCHEME NAME="#ndTitle.text#"
- DESCRIPTION="An ODBC query Scheme for UserDirectory"
- SQLAUTHUSER="#ndAuthuser.text#"
- SQLENUM="#ndEnumerate.text#"
- SQLGETGROUPPROP="#ndgetgrpprop.text#"
- SQLGETGROUPPROPS="#ndgetgrpprops.text#"
- SQLGETGROUPS="#ndgetusrgrps.text#"
- SQLGETOBJINFO="#ndgetusrgrpinfo.text#"
- SQLGETUSERPROP="#ndgetusrprop.text#"
- SQLGETUSERPROPS="#ndgetusrprops.text#"
- SQLINITUSER="#ndinituser.text#"
- SQLISGROUPMEMBER="#ndisgrpmmbr.text#"
- SQLLOOKUP="#ndlookup.text#"
- SQLLOOKUPGROUP="#ndlookupgrps.text#"
- SQLLOOKUPUSER="#ndlookupusrs.text#"
- SQLSETGROUPPROP="#ndsetgrpprop.text#"
- SQLSETUSERPROP="#ndsetusrprop.text#"
- >
- <CFCATCH>
- <cflog text = "Failed to Create ODBCQueryScheme for #ndTitle.text#"
- file = "#LOGFILE#"
- type = "Error">
- </CFCATCH>
- </CFTRY>
- <CFTRY>
- <CFNewInternalAdminSecurity ACTION=ADDUSERDIRECTORY NAME="#ndTitle.text#"
- DESCRIPTION="#ndDescription.text#"
- SERVER="#ndServer.text#"
- TYPE="#ndNamespace.text#"
- USERNAME="#ndUsername.text#"
- USERPwd="#ndPassword.text#"
- USERSECURECONNECT="#ndSecureCon.text#"
- >
- <CFCATCH>
- <cflog text = "Failed to add ODBC user directory #ndTitle.text#"
- file = "#LOGFILE#"
- type = "Error">
- </CFCATCH>
- </CFTRY>
- <CFELSEIF ndNamespace.text IS "LDAP:">
- <CFTRY>
- <CFNewInternalAdminSecurity ACTION=ADDUSERDIRECTORY NAME="#ndTitle.text#"
- DESCRIPTION="#ndDescription.text#"
- SERVER="#ndServer.text#"
- TYPE="#ndNamespace.text#"
- USERNAME="#ndUsername.text#"
- USERPwd="#ndPassword.text#"
- USERSECURECONNECT="#ndSecureCon.text#"
- USERCREDENTIALS="#UserCredentials#"
- RESULTS="#ndSearchresults.text#"
- TIMEOUT="#ndSearchtimeout.text#"
- SCOPE="#ndSearchscope.text#"
- ROOT="#ndSearchroot.text#"
- SEARCHSTART="#ndLookupstart.text#"
- SEARCHEND="#ndLookupend.text#"
- >
- <CFCATCH>
- <cflog text = "Failed to add LDAP user directory #ndTitle.text#"
- file = "#LOGFILE#"
- type = "Error">
- </CFCATCH>
- </CFTRY>
- <CFELSE>
- <CFTRY>
- <CFNewInternalAdminSecurity ACTION=ADDUSERDIRECTORY NAME="#ndTitle.text#"
- DESCRIPTION="#ndDescription.text#"
- SERVER="#ndServer.text#"
- TYPE="#ndNamespace.text#"
- USERNAME="#ndUsername.text#"
- USERPwd="#ndPassword.text#"
- USERSECURECONNECT="#ndSecureCon.text#"
- >
- <CFCATCH>
- <cflog text = "Failed to add NT user directory #ndTitle.text#"
- file = "#LOGFILE#"
- type = "Error">
- </CFCATCH>
- </CFTRY>
- </CFIF>
- </cfoutput>
- </cfloop>
- </table>
- <cfflush>
- </cfloop>
-
-
- <cfloop collection="#Policy.selectNodes("policystore/securitycontexts")#" item="SecurityContexts">
- <cfscript>
- SC = SecurityContexts.selectNodes("securitycontext");
- </cfscript>
-
- <table border="2">
- <cfloop collection="#SC#" item="SecurityContext">
-
- <cfscript>
- ndTitle = SecurityContext.selectSingleNode("name");
- ndDescription = SecurityContext.selectSingleNode("description");
- ndProtectall = SecurityContext.selectSingleNode("protectall");
- ndRealm = SecurityContext.selectNodes("realm");
- ndRule = SecurityContext.selectNodes("rule");
- ndUD = SecurityContext.selectNodes("userdirectory");
- ndpolicy = SecurityContext.selectNodes("policy");
- </cfscript>
-
- <cfoutput>
- <tr>
- <td><B>NAME</B> <b>#ndTitle.text#</b></td>
- <td><B>DESCRIPTION</B> #ndDescription.text#</td>
- <td><B>PROTECTALL</B> #ndProtectall.text#</td>
- <!--Context name-->
- <cfset scname = "#ndTitle.text#">
- <!--Change the context name since testing on same machine as source-->
- <CFTRY>
- <CFNewInternalAdminSecurity
- ACTION=ADDSECURITYCONTEXT
- NAME="#scname#"
- Description="#ndDescription.text#" Update=YES>
- <CFCATCH>
- <cflog text = "Failed to add Security Context #scname#"
- file = "#LOGFILE#"
- type = "Error">
- </CFCATCH>
- </CFTRY>
- <cfloop collection="#ndRealm#" item="realm">
- <cfscript>
- rname = realm.selectSinglenode("name");
- rdesc = realm.selectSinglenode("description");
- </cfscript>
- <td><b>REALM</b> <b>#rname.text#</b> #rdesc.text#</td>
- <CFIF rname.text IS "X509">
- <CFTRY>
- <CFNewInternalAdminSecurity ACTION=ADDSECURITYREALM NAME="#rname.text#" Directory="#scname#"
- Server="#SecurityServer#" Description="#rdesc.text#" AuthType="X509" ProtectAll="#ndProtectall.text#">
- <CFCATCH>
- <cflog text = "Failed to add Security Realm #rname.text# to Context #scname#"
- file = "#LOGFILE#"
- type = "Error">
- </CFCATCH>
- </CFTRY>
- <CFELSEIF rname.text is "Security">
- <CFTRY>
- <CFNewInternalAdminSecurity ACTION=ADDSECURITYREALM NAME="#rname.text#" Directory="#scname#"
- Server="#SecurityServer#" Description="#rdesc.text#" ProtectAll="#ndProtectall.text#">
- <CFCATCH>
- <cflog text = "Failed to add Security Realm #rname.text# to Context #scname#"
- file = "#LOGFILE#"
- type = "Error">
- </CFCATCH>
- </CFTRY>
- <CFELSE>
- <CFTRY>
- <CFNewInternalAdminSecurity ACTION=ADDSECURITYREALM NAME="#rname.text#" Directory="#scname#"
- Server="#SecurityServer#" Description="#rdesc.text#" ProtectAll="#ndProtectall.text#" Update="#RealmExists#">
- <CFCATCH>
- <cflog text = "Failed to add Security Realm #rname.text# to Context #scname#"
- file = "#LOGFILE#"
- type = "Error">
- </CFCATCH>
- </CFTRY>
- </CFIF>
- <cfflush>
- </cfloop>
- <cfloop collection="#ndRule#" item="rule">
- <cfscript>
- rlname = rule.selectSinglenode("name");
- rldesc = rule.selectSinglenode("description");
- rltype = rule.selectSinglenode("type");
- rlres = rule.selectSinglenode("resource");
- rlactn = rule.selectSinglenode("action");
- if (Compare(rltype.text,"File") EQ 0) {
- temp = rlres;
- rlres = rlactn;
- rlactn = temp;
- }
-
- </cfscript>
-
- <td><b>RULE</b> <b>#rlname.text#</b> #rldesc.text# #rltype.text# #rlres.text# #rlactn.text#</td>
- <cftry>
- <cfif Compare(rltype.text,"Security") EQ 0>
- <CFNewInternalAdminSecurity ACTION=ADDRULE
- NAME="#rlname.text#"
- DESCRIPTION="#rldesc.text#"
- DIRECTORY="#scname#"
- TYPE="#rltype.text#"
- RESOURCE="#rlname.text#"
- UPDATE="NO">
- <cfelseif Compare(rltype.text,"X509") EQ 0>
- <CFNewInternalAdminSecurity ACTION=ADDRULE
- NAME="#rlname.text#"
- DESCRIPTION="#rldesc.text#"
- DIRECTORY="#scname#"
- TYPE="#rltype.text#"
- RESOURCE="#scname#"
- UPDATE="NO">
- <cfelse>
- <cfset rule_resource_action="">
- <cfif CompareNoCase(rltype.text,"CFML") EQ 0>
- <cfif (CompareNoCase(rlname.text, "CFCOLLECTION") EQ 0) or
- (CompareNoCase(rlname.text, "CFDIRECTORY") EQ 0) or
- (CompareNoCase(rlname.text, "CFFILE") EQ 0) or
- (CompareNoCase(rlname.text, "CFINDEX") EQ 0) or
- (CompareNoCase(rlname.text, "CFLDAP") EQ 0) or
- (CompareNoCase(rlname.text, "CFREGISTRY") EQ 0)>
- <cfset rule_resource_action=#rlactn.text#>
- </cfif>
- <cfelseif (CompareNoCase(rltype.text,"DATASOURCE") EQ 0) or
- (CompareNoCase(rltype.text,"COLLECTION") EQ 0) or
- (CompareNoCase(rltype.text,"FILE") EQ 0)>
- <cfset rule_resource_action=#rlactn.text#>
- </cfif>
- <CFNewInternalAdminSecurity ACTION=ADDRULE
- NAME="#rlname.text#"
- DESCRIPTION="#rldesc.text#"
- DIRECTORY="#scname#"
- TYPE="#rltype.text#"
- RESOURCE="#rlres.text#"
- RESOURCEACTION="#rule_resource_action#"
- UPDATE="NO">
- </cfif>
- <cfcatch>
- <cflog text = "Failed to add rule #rlname.text# to context #scname#"
- file = "#LOGFILE#"
- type = "Error">
- </cfcatch>
- </cftry>
- <cfflush>
- </cfloop>
- <cfloop collection="#ndUD#" item="userD">
- <cfscript>
- uname = userD.selectSinglenode("name");
- </cfscript>
- <td><b>USERDIRECTORY</b> <b>#uname.text#</b></td>
- <cftry>
- <CFNewInternalAdminSecurity ACTION=ADDUSERDIRECTORYTOCONTEXT NAME=#uname.text#
- DIRECTORY="#scname#">
- <cfcatch>
- <cflog text = "Failed to add user directory #uname.text# to context #scname#"
- file = "#LOGFILE#"
- type = "Error">
- </cfcatch>
- </cftry>
- <cfflush>
- </cfloop>
- <cfloop collection="#ndpolicy#" item="policy">
- <cfscript>
- pname = policy.selectSinglenode("name");
- pdesc = policy.selectSinglenode("description");
- prule = policy.selectNodes("rule");
- puser = policy.selectNodes("user");
- </cfscript>
- <td><b>POLICY</b> <b>#pname.text#</b> #pdesc.text#
- <CFTRY>
- <CFNewInternalAdminSecurity ACTION=ADDPOLICY
- NAME="#pname.text#"
- DESCRIPTION="#pdesc.text#"
- DIRECTORY="#scname#"
- UPDATE="No">
- <cfcatch type="Any">
- <cflog text = "Failed to add policy #pname.text# to context #scname#"
- file = "#LOGFILE#"
- type = "Error">
- </CFCATCH>
- </CFTRY>
- <cfloop collection="#prule#" item="polrule">
- <cfscript>
- prname = polrule.selectSinglenode("name");
- </cfscript>
- <b>rule</b> #prname.text#
- <cftry>
- <CFNewInternalAdminSecurity ACTION=ADDRULETOPOLICY
- NAME="#prname.text#"
- DIRECTORY="#scname#"
- POLICY="#pname.text#"
- RESPONSE="">
- <cfcatch type="Any">
- <cflog text = "Failed to add rule #prname.text# to policy #pname.text#"
- file = "#LOGFILE#"
- type = "Error">
- </cfcatch>
- </cftry>
- <cfflush>
- </cfloop>
-
- <cfloop collection="#puser#" item="poluser">
- <cfscript>
- puname = poluser.selectSinglenode("name");
- pudir = poluser.selectSinglenode("directory");
- </cfscript>
- <b>user</b> #puname.text# #pudir.text#
- <CFTRY>
- <CFNewInternalAdminSecurity ACTION=ADDUSERTOPOLICY
- NAME="#puname.text#"
- DIRECTORY="#scname#"
- POLICY="#pname.text#"
- USER="#pudir.text#">
- <cfcatch type="Any">
- <cflog text = "Failed to add users #puname.text# to policy #pname.text#"
- file = "#LOGFILE#"
- type = "Error">
- </CFCATCH>
- </CFTRY>
- </cfloop>
-
- </td>
- <cfflush>
- </cfloop>
- </tr>
- </cfoutput>
-
- </cfloop>
- </table>
- </cfloop>
- </body>
- </html>
-